home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HyperLib 1997 Winter - Disc 1
/
HYPERLIB-1997-Winter-CD1.ISO.7z
/
HYPERLIB-1997-Winter-CD1.ISO
/
オンラインウェア
/
UTIL
/
Msh 1.0.0.sit
/
Msh 1.0.0 f
/
Manual
/
MAN2G.HLP
< prev
next >
Wrap
Text File
|
1996-11-14
|
38KB
|
1,418 lines
/***Intro***/ GUI WindowManager Window DialogManager Dialog ControlManager Control MenuManager Menu
Intro(2g)
【名前】
Intro - Toolbox: GUI関連(man2g.hlp)
【概要】
【Inside Macintosh】
<<キーワード>>
Window Manager WindowManager
I-267
IV-49 Zoom の記述
V-197 カラー,マルチスクリーン対応
Dialog Manager DialogManager
I-397
IV-59 HideDItem(), ShowDItem(), FindDItem(),
UpdtDialog() の追加
V-277 カラー対応
VI-3-19 アイテムリストの操作(追加,短縮)
Control Manager ControlManager
I-309
IV-53 UpdtControl(), Draw1Control() の追加
V-216 カラー対応
VI-3-16 ポップアップメニューコントロール
Menu Manager MenuManager
I-339
IV-55 InsMenuItem(), DelMenuItem() の追加
V-225 階層メニュー, ポップアップメニュー, カラー対応
Layer Manager LayerManager
InsideMac には記述がない
【関連項目】
QuickDraw(2q)
TextEdit(2t)
【ヘッダー】
Windows.h
Dialogs.h
Controls.h
Menus.h
Layers.h (Apple からは提供されていない)
/***WindowRecord***/ WindowPeek CWindowRecord CWindowPeek WinCTab WCTabPtr WCTabHandle WStateData WStateDataPtr WStateDataHandle WindowManager
WindowRecord(2g)
【名前】
WindowRecord - データタイプ
CWindowRecord - データタイプ
WStateData - データタイプ
WinCTab - データタイプ
【形式】
WindowRecord と CWindowRecord の識別方法
((CGrafPort*)port)->portVersion の上位 2bit がオンの場合カラー
■WindowRecord I-276
WindowRecord
GrafPort port;
short windowKind;
Boolean visible;
Boolean hilited;
Boolean goAwayFlag;
Boolean spareFlag; Zoom で使用される
RgnHandle strucRgn;
RgnHandle contRgn;
RgnHandle updateRgn;
Handle windowDefProc;
Handle dataHandle; Zoom 時は、WStateDataが入る
StringHandle titleHandle;
short titleWidth;
ControlHandle controlList;
WindowRecord *nextWindow;
PicHandle windowPic;
long refCon;
WindowPeek WindowRecord *
■CWindowRecord ??
CWindowRecord
CGrafPort port;
short windowKind;
Boolean visible;
Boolean hilited;
Boolean goAwayFlag;
Boolean spareFlag;
RgnHandle strucRgn;
RgnHandle contRgn;
RgnHandle updateRgn;
Handle windowDefProc;
Handle dataHandle;
StringHandle titleHandle;
short titleWidth;
ControlHandle controlList;
CWindowRecord *nextWindow;
PicHandle windowPic;
long refCon;
CWindowPeek CWindowRecord *
■WStateData IV-49
ズームのためのデータ
WStateData
Rect userState;
Rect stdState;
WStateDataPtr WStateData *
WStateDataHandle WStateData **
■WinCTab V-202
WinCTab
long wCSeed;
short wCReserved;
short ctSize;
ColorSpec ctTable[5];
WCTabPtr WinCTab *
WCTabHandle WinCTab **
/***InitWindows***/ InitMenus InitDialogs ResumeProcPtr WindowManager
InitWindows(2g)
【名前】
InitWindows - ウインドウマネージャの初期化
InitMenus - メニューマネージャの初期化
InitDialogs - ダイアログマネージャの初期化
【書式】
■InitWindows I-281; V-208
■InitMenus I-351; V-242
■InitDialogs I-411
void InitWindows(void);
先立って以下を呼び出してください
InitGraf
InitFonts
void InitMenus(void);
先立って以下を呼び出してください
InitGraf
InitFonts
InitWindows
void InitDialogs(ResumeProcPtr resumeProc);
先立って以下を呼び出してください
InitGraf
InitFonts
InitWindows
InitMenus
TEInit
■ResumeProcPtr
pascal void (*ResumeProcPtr)(void);
/***GetWMgrPort***/ GetCWMgrPort SetWinColor GetAuxWin AuxWinRec AuxWinPtr AuxWinHandle WindowManager
GetWMgrPort(2g)
【名前】
GetWMgrPort -
GetCWMgrPort -
SetWinColor -
GetAuxWin -
AuxWinRec - データタイプ
【書式】
■GetWMgrPort I-282
■GetCWMgrPort V-205, 210
■SetWinColor V-207
■GetAuxWin V-207
void GetWMgrPort(GrafPtr *wPort);
void GetCWMgrPort(CGrafPtr *wMgrCPort);
void SetWinColor(WindowPtr theWindow, WCTabHandle newColorTable);
Boolean GetAuxWin(WindowPtr theWindow, AuxWinHandle *awHndl);
■AuxWinRec V-201
AuxWinRec
struct AuxWinRec **awNext;
WindowPtr awOwner;
CTabHandle awCTable;
Handle dialogCItem;
long awFlags;
CTabHandle awReserved;
long awRefCon;
AuxWinPtr AuxWinRec *
AuxWinHandle AuxWinRec **
/***NewWindow***/ GetNewWindow CloseWindow DisposeWindow NewCWindow GetNewCWindow GetWVariant WindowManager
NewWindow(2g)
【名前】
NewWindow - 新しいウインドウの作成
GetNewWindow - リソース('WIND')からウインドウを読み込む
CloseWindow - ウインドウを消去&メモリ解放(windowPtr は解放しない)
DisposeWindow - ウインドウを消去&メモリ解放
NewCWindow -
GetNewCWindow -
GetWVariant -
【書式】
■NewWindow I-282
■GetNewWindow I-283
■CloseWindow I-283
■DisposeWindow I-284
■NewCWindow V-207
■GetNewCWindow V-207
■GetWVariant V-208
ウインドウタイプ(システム標準 wind-proc)
0 documentProc document (リサイズあり)
4 noGrowDocProc document (リサイズなし)
8 zoonDocProc Zoom あり document (リサイズあり)
12 zoomNoGrow Zoom あり document (リサイズあり)
1 dBoxProc ダイアログ用
5 movableDBoxProc 移動可能なダイアログ [System 7.0]
2 plainDBox ただの四角
3 altDBoxProc 陰付きの四角
16 rDocProc 角が丸い(通常は DA 用)
+0 16 x 16
+1 4 x 4
+2 6 x 6
+3 8 x 8
+4 10 x 10
+5 12 x 12
+6 20 x 20
+7 24 x 24
WindowPtr NewWindow(
void *wStorage, WindowRecord の格納先
(NULL を渡すと NewPtr される)
Rect *boundsRect, 表示位置,サイズ(グローバル座標)
Str255 title, タイトル文字列
Boolean visible, すぐに表示するかどうか
short theProc, ウインドウタイプ
WindowPtr behind, このウインドウの後ろに置く
NULL 一番後ろ
-1 一番前
Boolean goAwayFlag, GoAray ボックスを表示
long refCon); ユーザー用のデータ
WindowPtr GetNewWindow(short windowID,
void *wStorage,
WindowPtr behind);
void CloseWindow(WindowPtr theWindow);
void DisposeWindow(WindowPtr theWindow);
WindowPtr NewCWindow(void *wStorage, const Rect *boundsRect,
ConstStr255Param title, Boolean visible, short procID,
WindowPtr behind, Boolean goAwayFlag, long refCon);
WindowPtr GetNewCWindow(short windowID, void *wStorage,
WindowPtr behind);
short GetWVariant(WindowPtr theWindow);
/***GetWTitle***/ SetWTitle SetWRefCon GetWRefCon SetWindowPic GetWindowPic WindowManager
GetWTitle(2g)
【名前】
GetWTitle - ウインドウタイトルの取得
SetWTitle - ウインドウタイトルの設定
SetWRefCon - 定義データの設定
GetWRefCon - 定義データの取得
SetWindowPic - ウインドウピクチャーの設定
GetWindowPic - ウインドウピクチャーの取得
【書式】
■GetWTitle I-284
■SetWTitle I-284
■SetWRefCon I-293
■GetWRefCon I-293
■SetWindowPic I-293
■GetWindowPic I-293
void GetWTitle(WindowPtr theWindow, Str255 title);
void SetWTitle(WindowPtr theWindow, ConstStr255Param title);
void SetWRefCon(WindowPtr theWindow, long data);
long GetWRefCon(WindowPtr theWindow);
void SetWindowPic(WindowPtr theWindow, PicHandle pic);
PicHandle GetWindowPic(WindowPtr theWindow);
/***SelectWindow***/ HideWindow ShowWindow ShowHide HiliteWindow BringToFront SendBehind FrontWindow WindowManager
SelectWindow(2g)
【名前】
SelectWindow - ウインドウの選択(一番先頭に出す)
HideWindow - ウインドウを隠す
ShowWindow - ウインドウの表示
ShowHide - ウインドウの Show/Hide
HiliteWindow - ウインドウをハイライトさせる
BringToFront - ウインドウを一番先頭にする(選択はしない)
SendBehind - ウインドウの順番の変更(指定ウインドウの下に)
FrontWindow - 一番前のウインドウを返す
【書式】
■SelectWindow I-285
■HideWindow I-285
■ShowWindow I-285
■ShowHide I-286
■HiliteWindow I-286
■BringToFront I-286
■SendBehind I-286
■FrontWindow I-286
void SelectWindow(WindowPtr theWindow);
void HideWindow (WindowPtr theWindow);
void ShowWindow (WindowPtr theWindow);
void ShowHide(WindowPtr theWindow, Boolean showFlag);
showFlag =TRUE ウインドウを表示
=FALSE ウインドウを隠す
ハイライトも、イベントも起こさない
void HiliteWindow(WindowPtr theWindow, Boolean fHilite);
fHilite が TRUE ならウインドウをハイライトさせる。
void BringToFront(WindowPtr theWindow);
void SendBehind(WindowPtr theWindow, WindowPtr behindWindow);
WindowPtr FrontWindow(void);
/***FindWindow***/ TrackGoAway TrackBox DragWindow GrowWindow DrawGrowIcon MoveWindow SizeWindow ZoomWindow WindowManager
FindWindow(2g)
【名前】
FindWindow - ウインドウのどの部分でマウスが押されたかを取得
TrackGoAway - クローズボックスのトラック
GrowWindow - サイズを変更するイメージをかく
DrawGrowIcon - サイズボックスの描画
SizeWindow - ウインドウのサイズ変更
DragWindow - ウインドウのドラッグ処理(位置の移動)
MoveWindow - ウインドウの移動
TrackBox - ズームボックスのトラック
ZoomWindow - 標準状態とユーザー状態の切り換え
【書式】
■FindWindow I-287; V-208
■TrackGoAway I-288
■DrawGrowIcon I-287
■DragWindow I-289
■GrowWindow I-289; V-209
■MoveWindow I-289; V-209
■SizeWindow I-290
■TrackBox IV-50
■ZoomWindow IV-50; V-210
short FindWindow(Point thePoint, WindowPtr *theWindow);
0 inDesk
1 inMenuBar
2 inSysWindow
3 inContent
4 inDrag
5 inGrow
6 inGoAway
7 inZoomIn
8 inZoomOut
Boolean TrackGoAway(WindowPtr theWindow, Point thePt);
戻り値: TRUE クローズボックス内で離された
FALSE それ以外で離された
void DragWindow(WindowPtr theWindow, Point startPt,
const Rect *boundsRect);
theWindowのクリックされたポイントを渡すとboundsRectないでドラ
ッグ処理を行なう
long GrowWindow(WindowPtr theWindow, Point startPt,
const Rect *bBox);
サイズを変更するイメージをかき、マウスを追従
bBox.top - 最小高
left - 最小幅
bottom - 最大高
right - 最大幅
戻り値: HiWord 高さ
LowWord 幅
### グローバル変数に設定すると、1ドット毎でなく動かせる
void DrawGrowIcon(WindowPtr theWindow);
void MoveWindow(WindowPtr theWindow, short hGlobal, short vGlobal,
Boolean front);
ウインドウの grafPort の portRect の左上を指定グロー
バル座標に移動
front=TRUE -- アクティブになる
void SizeWindow(WindowPtr theWindow, short w, short h,
Boolean fUpdate);
portRect の大きさを変更(w=h=0 の場合はなにもしない)
fUpdate = TRUE -- 変更によって生じたリージョンを変える
Boolean TrackBox(WindowPtr theWindow, Point thePt, short partCode);
戻り値: TRUE ズームボックス内で離された
FALSE それ以外で離された
void ZoomWindow(WindowPtr theWindow, short partCode, Boolean front);
標準状態とユーザー状態を切り換える。それぞれ、
WindowPtr^^.WStateDate.stdStateとuserState
/***InvalRect***/ InvalRgn ValidRect ValidRgn BeginUpdate EndUpdate WindowManager
InvalRect(2g)
【名前】
InvalRect - Rect をアップデートリージョンに繰入れる
InvalRgn - Rgn をアップデートリージョンに繰入れる
ValidRect - Rect をアップデートリージョンからとる
ValidRgn - Rgn をアップデートリージョンからとる
BeginUpdate - ウインドウのアップデートの準備をする
EndUpdate - ウインドウのアップデートをおえる
【書式】
■InvalRect I-291
■InvalRgn I-291
■ValidRect I-292
■ValidRgn I-292
■BeginUpdate I-292
■EndUpdate I-293
void InvalRect(const Rect *badRect);
void InvalRgn(RgnHandle badRgn);
void ValidRect(const Rect *goodRect);
void ValidRgn(RgnHandle goodRgn);
void BeginUpdate(WindowPtr theWindow);
void EndUpdate (WindowPtr theWindow);
/***PinRect***/ DragGrayRgn GetGrayRgn SetDeskCPat DragGrayRgnProcPtr WindowManager
PinRect(2g)
【名前】
PinRect -
DragGrayRgn -
GetGrayRgn - 現在のデスクトップ領域の Rgnハンドルの取得
SetDeskCPat - デスクトップパターンの設定
【書式】
■PinRect I-293
■DragGrayRgn I-294; V-209
■GetGrayRgn V-208
■SetDeskCPat V-210
long PinRect(const Rect *theRect, Point thePt);
thePtに一番近いtheRect内のポイントを得る。上位に縦、下位に横
long DragGrayRgn(RgnHandle theRgn, Point startPt,
const Rect *boundsRect, const Rect *slopRect,
short axis, DragGrayRgnProcPtr actionProc);
procタイプ pascal void (*DragGrayRgnProcPtr)(void);
RgnHandle GetGrayRgn(void);
void SetDeskCPat(PixPatHandle deskPixPat);
/***CheckUpdate***/ ClipAbove SaveOld DrawNew PaintOne PaintBehind CalcVis CalcVisBehind WindowManager
CheckUpdate(2g)
【名前】
CheckUpdate - 低レベルウインドウルーチン
ClipAbove -
SaveOld -
DrawNew -
PaintOne -
PaintBehind -
CalcVis -
CalcVisBehind -
【書式】
■CheckUpdate I-296
■ClipAbove I-296
■SaveOld I-296
■DrawNew I-296
■PaintOne I-296; V-208
■PaintBehind I-297
■CalcVis I-297
■CalcVisBehind I-297
Boolean CheckUpdate(EventRecord *theEvent);
void ClipAbove(WindowPeek window);
void SaveOld(WindowPeek window);
void DrawNew(WindowPeek window, Boolean update);
void PaintOne(WindowPeek window, RgnHandle clobberedRgn);
void PaintBehind(WindowPeek startWindow, RgnHandle clobberedRgn);
void CalcVis(WindowPeek window);
void CalcVisBehind(WindowPeek startWindow, RgnHandle clobberedRgn);
#
#
#
/***DialogTemplate***/ DialogManager
DialogTemplate(2g)
【名前】
DialogTemplate -
【形式】
■DialogTemplate I-423
DialogTemplate
Rect boundsRect;
short procID;
Boolean visible;
Boolean filler1;
Boolean goAwayFlag;
Boolean filler2;
long refCon;
short itemsID;
Str255 title;
DialogTPtr DialogTemplate *
DialogTHndl DialogTemplate **
/***DialogRecord***/ DialogPeek StageList DialogPtr DialogManager
DialogRecord(2g)
【名前】
DialogRecord - ダイアログ data type
【形式】
■DialogRecord I-408
DialogRecord
WindowRecord window;
Handle items;
TEHandle textH;
short editField;
short editOpen;
short aDefItem;
DialogPeek DialogRecord *
■DialogPtr I-407
DialogPtr WindowPtr
■StageList I-424
StageList short
/***NewDialog***/ NewCDialog GetNewDialog CloseDialog DisposDialog CouldDialog FreeDialog SetDAFont ErrorSound SoundProcPtr DialogManager
NewDialog(2g)
【名前】
NewDialog - ダイアログの作成
NewCDialog - カラーダイアログの作成
GetNewDialog - 'DLOG' リソースの取得&表示
CloseDialog - スタック上のダイアログを消します
DisposDialog - ヒープ上のダイアログを消します
SetDAFont - 次に出るダイアログのフォントを指定
ErrorSound -
CouldDialog - [Sys7.0 よりダメ]
FreeDialog - [Sys7.0 よりダメ]
【書式】
■NewDialog I-412
■NewCDialog V-283
■GetNewDialog I-413; V-274
■CloseDialog I-413
■DisposDialog I-415
■SetDAFont I-412
■ErrorSound I-411
■CouldDialog I-415; V-284; ← VI-3-10 で使ってはいけない
■FreeDialog I-415; V-285; ← VI-3-10 で使ってはいけない
DialogPtr NewDialog(void *wStorage, const Rect *boundsRect,
ConstStr255Param title, Boolean visible, short procID,
WindowPtr behind, Boolean goAwayFlag, long refCon,
Handle itmLstHndl);
DialogPtr NewCDialog(void *dStorage, const Rect *boundsRect,
ConstStr255Param title, Boolean visible, short procID,
WindowPtr behind, Boolean goAwayFlag, long refCon,
Handle items);
procIDでタイプを、itemsでアイテムリストへのハンドルを指定して
ください。(NewWindow参照)
DialogPtr GetNewDialog(short dialogID, void *dStorage,
WindowPtr behind);
void CloseDialog(DialogPtr theDialog);
void DisposDialog(DialogPtr theDialog);
ヒープ上のダイアログを消します
void SetDAFont(short fontNum);
void ErrorSound(SoundProcPtr soundProc);
void CouldDialog(short dialogID);
void FreeDialog(short dialogID);
■SoundProcPtr
pascal void (*SoundProcPtr)(void);
/***ParamText***/ DialogManager
ParamText(2g)
【名前】
ParamText - 現ダイアログの StaticText の固定文字列を設定
【書式】
■ParamText I-422
void ParamText(ConstStr255Param param0, ConstStr255Param param1,
ConstStr255Param param2, ConstStr255Param param3);
固定文字列の^0,^1,^2,^3と入れ替えさせる
/***ModalDialog***/ ModalFilterProcPtr DialogManager
ModalDialog(2g)
【名前】
ModalDialog - ダイアログのイベント処理
【書式】
■ModalDialog I-415
void ModalDialog(ModalFilterProcPtr filterProc, short *itemHit);
フィルタ関数があるときはfilterProcで指定してください。
itemHit: イベントの起きたアイテム
■ModalFilterProcPtr
pascal Boolean (*ModalFilterProcPtr)(DialogPtr theDialog,
EventRecord *theEvent, short *itemHit);
/***IsDialogEvent***/ DialogSelect DialogManager
IsDialogEvent(2g)
【名前】
IsDialogEvent - イベントがダイアログに向けられたものかチェック
DialogSelect - イベントがダイアログのどのアイテムに向けられたか
【書式】
■IsDialogEvent I-416
■DialogSelect I-417
Boolean IsDialogEvent(const EventRecord *theEvent);
theEventがダイアログに向けられたものならTRUEを返します
Boolean DialogSelect(const EventRecord *theEvent, DialogPtr *theDialog,
short *itemHit);
theEventがダイアログのイネーブルアイテムにむけられたものなら
TRUEが返される
/***DrawDialog***/ UpdtDialog DialogManager
DrawDialog(2g)
【名前】
DrawDialog - ダイアログの再描画
UpdtDialog - 指定部分の再描画
【書式】
■DrawDialog I-418
■UpdtDialog IV-60
void DrawDialog(DialogPtr theDialog);
ダイアログの枠線以外を再描画する
void UpdtDialog(DialogPtr theDialog, RgnHandle updateRgn);
updateRgnで指定した部分を再描画する
/***Alert***/ StopAlert NoteAlert CautionAlert CouldAlert FreeAlert ResetAlrtStage AlertTemplate GetAlrtStage DialogManager
Alert(2g)
【名前】
Alert - アラートダイアログ処理
StopAlert - アラートダイアログ処理(Stop)
NoteAlert - アラートダイアログ処理(Note)
CautionAlert - アラートダイアログ処理(Caution)
ResetAlrtStage - 最後に実行されたアラートステージのリセット
GetAlrtStage -
AlertTemplate - data type
CouldAlert - [Sys7.0 よりダメ]
FreeAlert - [Sys7.0 よりダメ]
【書式】
■Alert I-418; V-284
■StopAlert I-419; V-284
■NoteAlert I-420; V-284
■CautionAlert I-420; V-284
■ResetAlrtStage I-423
■GetAlrtStage ??
■CouldAlert I-420; V-285 ← VI-3-10 で使ってはいけない
■FreeAlert I-420; V-285 ← VI-3-10 で使ってはいけない
short Alert(short alertID, ModalFilterProcPtr filterProc);
short StopAlert(short alertID, ModalFilterProcPtr filterProc);
short NoteAlert(short alertID, ModalFilterProcPtr filterProc);
short CautionAlert(short alertID, ModalFilterProcPtr filterProc);
alertIDで示されるアラートを表示し、アイテムにイベントが起きた
ところでアラートを閉る
戻り値: イベントの起きたアイテム番号
void ResetAlrtStage(void);
最後に実行されたアラートのステージをリセットします
short GetAlrtStage(void);
void CouldAlert(short alertID);
void FreeAlert(short alertID);
■AlertTemplate I-424
AlertTemplate
Rect boundsRect;
short itemsID;
StageList stages;
AlertTPtr AlertTemplate *
AlertTHndl AlertTemplate **
/***GetDItem***/ SetDItem HideDItem ShowDItem SelIText GetIText SetIText FindDItem DialogManager
GetDItem(2g)
【名前】
GetDItem - アイテム情報の取得
SetDItem - アイテム情報の設定
HideDItem - アイテムを隠す
ShowDItem - アイテムを出す
SelIText -
GetIText -
SetIText -
FindDItem - ローカル座標にかかるアイテム番号の取得
【書式】
■GetDItem I-421
■SetDItem I-421
■HideDItem IV-59
■ShowDItem IV-59
■SelIText I-422
■GetIText I-422
■SetIText I-422
■FindDItem IV-60
void GetDItem(DialogPtr theDialog, short itemNo, short *itemType,
Handle *item, Rect *box);
theDialogのアイテム番号itemNoのアイテムを返す
void SetDItem(DialogPtr theDialog, short itemNo, short itemType,
Handle item, const Rect *box);
theDialogのアイテム番号itemNoのアイテムを変える
void HideDItem(DialogPtr theDialog, short itemNo);
void ShowDItem(DialogPtr theDialog, short itemNo);
void SelIText(DialogPtr theDialog, short itemNo, short strtSel,
short endSel);
void GetIText(Handle item, Str255 text);
void SetIText(Handle item, ConstStr255Param text);
short FindDItem(DialogPtr theDialog, Point thePt);
thePt(ローカル座標)のかかるアイテム番号を返す
/***DlgCut***/ DlgPaste DlgCopy DlgDelete DialogManager
DlgCut(2g)
【名前】
DlgCut - 選択範囲をカット
DlgPaste - 選択範囲をペースト
DlgCopy - 選択範囲をコピー
DlgDelete - 選択範囲をクリア
【書式】
■DlgCut I-418
■DlgPaste I-418
■DlgCopy I-418
■DlgDelete I-418
void DlgCut (DialogPtr theDialog);
void DlgPaste (DialogPtr theDialog);
void DlgCopy (DialogPtr theDialog);
void DlgDelete(DialogPtr theDialog);
#
#
#
/***ControlRecord***/ ControlPtr ControlHandle ControlManager
ControlRecord(2g)
【名前】
ControlRecord - データタイプ
【形式】
■ControlRecord I-317
ControlRecord
struct ControlRecord **nextControl;
WindowPtr contrlOwner;
Rect contrlRect;
unsigned char contrlVis;
unsigned char contrlHilite;
short contrlValue;
short contrlMin;
short contrlMax;
Handle contrlDefProc;
Handle contrlData;
ProcPtr contrlAction;
long contrlRfCon;
Str255 contrlTitle;
ControlPtr ControlRecord *
ControlHandle ControlRecord **
/***NewControl***/ GetNewControl DisposeControl KillControls ControlManager
NewControl(2g)
【名前】
NewControl - コントロールの作成
GetNewControl - コントロールリソース('CNTL')の取得&表示
DisposeControl - コントロールの消去&開放
KillControls - 指定ウインドウの全コントロールの解放
【書式】
■NewControl I-319
■GetNewControl I-321
■DisposeControl I-321
■KillControls I-321
■Popup-menu について VI-3-16
ControlHandle NewControl(WindowPtr theWindow, const Rect *boundsRect,
ConstStr255Param title, Boolean visible, short value,
short min, short max, short procID, long refCon);
Valueにハイライトの状態を示します
o boundsRect 位置, 大きさ
o title タイトル名
o visible TRUE の場合表示される
o value 設定値
o min,max 最小, 最大値 (check,radio = 0,1)
o procID タイプ
0 pushButProc
1 checkBoxProc
2 radioButProc
16 scrollBarProc
1008 popupMenuProc [Sys7.0 以降]
その他 自分で作成したもの(詳細: I-328)
<< 補助情報 >>
8 useWFont フォント windowと同じに
(default: システムフォント)
o refCon ユーザーデータ
ControlHandle GetNewControl(short controlID, WindowPtr owner);
コントロールリソースを読み込み、ウインドウに表示
void DisposeControl(ControlHandle theControl);
void KillControls(WindowPtr theWindow);
** Popup-Menu コントロール **
popupFixedWidth = 1 << 0,
popupReserved = 1 << 1,
popupUseAddResMenu = 1 << 2,
popupUseWFont = 1 << 3,
popupTitleBold = 1 << 8,
popupTitleItalic = 1 << 9,
popupTitleUnderline = 1 << 10,
popupTitleOutline = 1 << 11,
popupTitleShadow = 1 << 12,
popupTitleCondense = 1 << 13,
popupTitleExtend = 1 << 14,
popupTitleNoStyle = 1 << 15};
popupTitleLeftJust = 0x00000000,
popupTitleCenterJust = 0x00000001,
popupTitleRightJust = 0x000000FF,
/***DrawControls***/ Draw1Control UpdtControl ControlManager
DrawControls(2g)
【名前】
DrawControls - コントロールを全て再描画
Draw1Control - コントロールの1つを再表示
UpdtControl - 指定アップデートリージョンコントロールのみ再表示
【書式】
■DrawControls I-322
■Draw1Control IV-53
■UpdtControl IV-53
void DrawControls(WindowPtr theWindow);
void Draw1Control(ControlHandle theControl);
void UpdtControl(WindowPtr theWindow, RgnHandle updateRgn);
/***SetCTitle***/ GetCTitle HideControl ShowControl HiliteControl MoveControl SizeControl SetCtlValue GetCtlValue SetCtlMin GetCtlMin SetCtlMax GetCtlMax SetCRefCon GetCRefCon SetCtlAction GetCtlAction ControlManager
SetCTitle(2g)
【名前】
SetCTitle - コントロールタイトルの設定
GetCTitle - コントロールタイトルの取得
HideControl - コントロールを隠す
ShowControl - コントロールを表示
HiliteControl - コントロールのハイライト属性変更
MoveControl - コントロールの移動
SizeControl - コントロールのリサイズ
SetCtlValue - 値の設定
SetCtlMin - min の設定
SetCtlMax - max の設定
GetCtlValue - 値の取得
GetCtlMin - min の取得
GetCtlMax - max の取得
SetCRefCon - 定義情報の設定
GetCRefCon - 定義情報の取得
SetCtlAction - アクション手続きを決める
GetCtlAction - アクション手続きをえる
【書式】
■SetCTitle I-321
■GetCTitle I-321
■HideControl I-322
■ShowControl I-322
■HiliteControl I-322
■MoveControl I-325
■SizeControl I-326
■SetCtlValue I-326
■GetCtlValue I-326
■SetCtlMin I-326
■GetCtlMin I-327
■SetCtlMax I-327
■GetCtlMax I-327
■SetCRefCon I-327
■GetCRefCon I-327
■SetCtlAction I-328
■GetCtlAction I-328
コントロールの状態
種別 0 1
---------------+---------------+-----
Button Hilight dark
Check Box チェック
Radio Button チェック
その他(scroll)
void SetCTitle(ControlHandle theControl, ConstStr255Param title);
void GetCTitle(ControlHandle theControl, Str255 title);
void HideControl(ControlHandle theControl);
void ShowControl(ControlHandle theControl);
HideControl() すると、コントロールの領域を
background-pattren で塗り、update region に追加する
void HiliteControl(ControlHandle theControl, short hiliteState);
void MoveControl(ControlHandle theControl, short h, short v);
void SizeControl(ControlHandle theControl, short w, short h);
void SetCtlValue(ControlHandle theControl, short theValue);
short GetCtlValue(ControlHandle theControl);
void SetCtlMin(ControlHandle theControl, short minValue);
void SetCtlMax(ControlHandle theControl, short maxValue);
short GetCtlMin(ControlHandle theControl);
short GetCtlMax(ControlHandle theControl);
void SetCRefCon(ControlHandle theControl, long data);
long GetCRefCon(ControlHandle theControl);
void SetCtlAction(ControlHandle theControl, ProcPtr actionProc);
ProcPtr GetCtlAction(ControlHandle theControl);
/***FindControl***/ TrackControl TestControl DragControl ControlManager
FindControl(2g)
【名前】
FindControl - マウス座標からコントロールを見つけだす
TrackControl - マウスの位置で応答処理する
TestControl - パートコードの取得
DragControl - コントロールをドラッグ
【書式】
■FindControl I-323
■TrackControl I-323
■TestControl I-325
■DragControl I-325
short FindControl(Point thePoint, WindowPtr theWindow,
ControlHandle *theControl);
マウスの押された位置を渡すと、それがどのコントロールに向けら
れたのかわかります。どれでもないならnilです
10 inButton
11 inCheckBox
20 inUpButton
21 inDownButton
22 inPageUp
23 inPageDown
129 inThumb
short TrackControl(ControlHandle theControl, Point thePoint,
ProcPtr actionProc);
マウスの位置で応答処理する
actionProcは
nil -ハイライトだけ
ProcPtr -それにしたがう
pascal void MyProc(ControlHandle theControl,
short partCode);
POINTER(-1)-デフォルト
short TestControl(ControlHandle theControl, Point thePt);
指定座標がそのコントロールのどのパートなのかを調べる
void DragControl(ControlHandle theControl, Point startPt,
const Rect *limitRect, const Rect *slopRect,
short axis);
コントロールをドラッグする。引数は、WindowのDragGrayRgnと同じ
/***SetCtlColor***/ GetAuxCtl GetCVariant AuxCtlRec AuxCtlPtr AuxCtlHandle CtlCTab CCTabPtr CCTabHandle ControlManager
SetCtlColor(2g)
【名前】
SetCtlColor -
GetAuxCtl -
GetCVariant -
CtlCTab - データタイプ
AuxCtlRec - データタイプ
【書式】
■SetCtlColor V-222
■GetAuxCtl V-222
■GetCVariant V-222
void SetCtlColor(ControlHandle theControl,
CCTabHandle newColorTable);
Boolean GetAuxCtl(ControlHandle theControl, AuxCtlHandle *acHndl);
short GetCVariant(ControlHandle theControl);
■CtlCTab V-218
CtlCTab
long ccSeed;
short ccRider;
short ctSize;
ColorSpec ctTable[4];
CCTabPtr CtlCTab *
CCTabHandle CtlCTab **
■AuxCtlRec V-217
AuxCtlRec
Handle acNext;
ControlHandle acOwner;
CCTabHandle acCTable;
short acFlags;
long acReserved;
long acRefCon;
AuxCtlPtr AuxCtlRec *
AuxCtlHandle AuxCtlRec **
#
#
#
/***MenuInfo***/ MenuPtr MenuHandle MenuCRsrc MenuCRsrcPtr MenuCRsrcHandle MenuManager
MenuInfo(2g)
【名前】
MenuInfo - データタイプ
MenuCRsrc - データタイプ
【形式】
■MenuInfo I-345; V-230
MenuInfo
short menuID;
short menuWidth;
short menuHeight;
Handle menuProc;
long enableFlags;
Str255 menuData;
MenuPtr MenuInfo *
MenuHandle MenuInfo **
■MenuCRsrc V-234
MenuCRsrc
short numEntries;
MCTable mcEntryRecs;
MenuCRsrcPtr MenuCRsrc *
MenuCRsrcHandle MenuCRsrc **
/***NewMenu***/ GetMenu DisposeMenu AppendMenu AddResMenu InsertResMenu MenuManager
NewMenu(2g)
【名前】
NewMenu - メニューの作成
GetMenu - メニューリソース('MENU')の取得
DisposeMenu - メニューのメモリ開放
AppendMenu - メニューの最後にDataを付け加える
AddResMenu - メニューの最後にリソースを付け加える
InsertResMenu - メニューの指定位置にリソースを付け加える
【書式】
■NewMenu I-351
■GetMenu I-351; V-243
■DisposeMenu I-352
■AppendMenu I-352; V-243
■AddResMenu I-353; V-243
■InsertResMenu I-353; V-243
MenuHandle NewMenu(short menuID, const Str255 menuTitle);
MenuHandle GetMenu(short resourceID);
void DisposeMenu(MenuHandle theMenu);
void AppendMenu(MenuHandle menu, ConstStr255Param data);
メニューの最後尾に、Dataを付け加えます。
Meta charを参照
; アイテムの区切り(または 0x0d)
^ ICON(1=257 〜 9=265)
! マークを付ける
< スタイルの指定
B Bold
I Italic
U Underline
O Outline
S Shadow
/ ショートカットキー
( Disable
例: "(Too Much^1<B/T"
"Undo;(-;Cut" 間に区切り線を入れる
void AddResMenu(MenuHandle theMenu, ResType theType);
void InsertResMenu(MenuHandle theMenu, ResType theType,
short afterItem);
メニューに現在オープンされているリソースを全て付け加えます
'DRVR' DAなど
'FONT' フォント
/***InsertMenu***/ DrawMenuBar InvalMenuBar DeleteMenu ClearMenuBar GetNewMBar GetMenuBar SetMenuBar MenuManager
InsertMenu(2g)
【名前】
InsertMenu - メニューをメニューバーに追加
DrawMenuBar - InsertMenu等で追加されたメニューをすべて描画
DeleteMenu - メニューバーからメニューを取り除く
ClearMenuBar - 現メニューバーのクリア
GetNewMBar - メニューバーリソース('MBAR')を読込む
GetMenuBar - 現メニューバーをコピーし取得
SetMenuBar - 現メニューバーの設定
InvalMenuBar - ??? (IM に載っていない)
【書式】
■InsertMenu I-353; V-244
■DrawMenuBar I-354; V-244
■DeleteMenu I-354; V-244
■ClearMenuBar I-354; V-247
■GetNewMBar I-354; V-247
■GetMenuBar I-355
■SetMenuBar I-355
■InvalMenuBar ???
void InsertMenu(MenuHandle theMenu, short beforeID);
beforeID = 0 最後に追加
0以外 追加するメニューID
-1 見えない位置に追加
(階層,PopUp メニュー用)
void DrawMenuBar(void);
InsertMenu等でリストに乗せられたメニューをすべて描画します
void DeleteMenu(short menuID);
メニューバーから取り除いたMenuHandleも、再アクセス可能です
void ClearMenuBar(void);
Handle GetNewMBar(short menuBarID);
Handle GetMenuBar(void);
現在のメニューバーをコピーし、ハンドルを返します
void SetMenuBar(Handle menuList);
GetMenuBar,GetNewMBarのメニューを活用するために使用します
void InvalMenuBar(void);
/***InsMenuItem***/ DelMenuItem MenuSelect MenuKey HiliteMenu MenuChoice MenuManager
InsMenuItem(2g)
【名前】
InsMenuItem - メニューアイテムの挿入
DelMenuItem - メニューアイテムの削除
MenuSelect - メニューのマウスによる選択
MenuKey - ショートカットキーからメニューの番号を得る
HiliteMenu - メニューのハイライト
MenuChoice - disable-item のどれが選択されたか調べる
【書式】
■InsMenuItem IV-55
■DelMenuItem IV-56; V-244
■MenuSelect I-356; V-244
■MenuKey I-356; V-245
■HiliteMenu I-357; V-245
■MenuChoice V-240
void InsMenuItem(MenuHandle theMenu, ConstStr255Param itemString,
short afterItem);
theMenuのafterItemの直後に、itemStringをつなげます。メタキャ
ラクタでつなぐと、逆順になります
void DelMenuItem(MenuHandle theMenu, short item);
long MenuSelect(Point startPt);
メニューバーの中にイベントが起きたとき、グローバル座標を渡し
てください。
戻り値: 0 キャンセル
上位ワード menuID
下位ワード itemNo (1〜)
long MenuKey(short ch);
chにコマンドキーと一緒に押されたキーを渡してください。
(MenuSelect参照)
void HiliteMenu(short menuID);
引数が0やそのIDが存在しない場合、慨存のハイライト表示を消す
long MenuChoice(void);
MenuSelect() が 0 を返した時にコールすると、disable-item の
のどこではマウスが離されたかわかる。
HiWord menuID
LoWord item (0 = 指定 menuID でキャンセルされた)
/***SetItem***/ GetItem DisableItem EnableItem CheckItem SetItemMark GetItemMark SetItemIcon GetItemIcon SetItemStyle GetItemStyle GetItemCmd SetItemCmd MenuManager
SetItem(2g)
【名前】
SetItem - アイテム名の設定
GetItem - アイテム名の取得
DisableItem - アイテムを使用禁止に
EnableItem - アイテムを使用可能に
CheckItem - アイテムを check/uncheck する
SetItemMark - アイテムの左隣にマークをつける
GetItemMark - アイテムの左隣にあるマークを取得
SetItemIcon - アイテムの左隣にアイコンを付ける
GetItemIcon - アイテムの左隣にあるアイコン番号の取得
SetItemStyle - アイテムスタイルの設定
GetItemStyle - アイテムスタイルを取得
SetItemCmd - アイテムにサブメニューの設定
GetItemCmd - アイテムにサブメニューがついているかチェック
【書式】
■SetItem I-357
■GetItem I-358
■DisableItem I-358; V-246
■EnableItem I-358; V-246
■CheckItem I-358
■SetItemMark I-359; V-246
■GetItemMark I-359; V-246
■SetItemIcon I-359; V-246
■GetItemIcon I-360; V-246
■SetItemStyle I-360
■GetItemStyle I-360; V-247
■SetItemCmd V-246
■GetItemCmd V-240
void SetItem(MenuHandle theMenu, short item, const Str255 itemStr);
void GetItem(MenuHandle theMenu, short item, Str255 itemStr);
void DisableItem(MenuHandle theMenu, short item);
void EnableItem (MenuHandle theMenu, short item);
item = 0 の場合、メニュー全体の設定となる
(注意: DrawMenuBar() でメニューバーの再表示が必要)
void CheckItem(MenuHandle theMenu, short item, Boolean checked);
checked: TRUE - チェックをつける
FALSE - チェックをはずす
void SetItemMark(MenuHandle theMenu, short item, short markChar);
void GetItemMark(MenuHandle theMenu, short item, short *markChar);
アイテムの左隣に、markChar をマークします
アイテムの左隣にあるマークを返します
void SetItemIcon(MenuHandle theMenu, short item, short iconIndex);
void GetItemIcon(MenuHandle theMenu, short item, short *iconIndex);
アイテムの左隣に、(icon-256)のIDのアイコンを付けます。
ID=256のアイコンはできない
void SetItemStyle(MenuHandle theMenu, short item, short chStyle);
void GetItemStyle(MenuHandle theMenu, short item, Style *chStyle);
例: SetItemStyle(myMenu,2, bold|italic);
void SetItemCmd(MenuHandle theMenu, short item, short cmdChar);
void GetItemCmd(MenuHandle theMenu, short item, short *cmdChar);
cmdChar = 0x1b --> サブメニューあり
【使用例】
1) メニューアイテムにサブメニューを設定する
MenuHandle theMenu; メニューハンドル
short item; アイテム番号
SetItemMark(theMenu, item, 150/* 'MENU' のID */);
SetItemCmd (theMenu, item, 0x1b);
/***CalcMenuSize***/ CountMItems GetMHandle FlashMenuBar SetMenuFlash InitProcMenu PopUpMenuSelect MenuManager
CalcMenuSize(2g)
【名前】
CalcMenuSize - メニューのサイズの計算
CountMItems - メニューアイテム数のカウント
GetMHandle - メニューリスト中にあるメニューハンドルの取得
FlashMenuBar - メニューバーの反転
SetMenuFlash - ** マウスコントロールパネル用
InitProcMenu -
PopUpMenuSelect - ポップアップメニューの選択
【書式】
■CalcMenuSize I-361
■CountMItems I-361
■GetMHandle I-361; V-246
■FlashMenuBar I-361; V-246
■SetMenuFlash I-361
■InitProcMenu V-238
■PopUpMenuSelect V-241
void CalcMenuSize(MenuHandle theMenu);
メニューのサイズを計算して、レコード中のフィールドに格納
short CountMItems(MenuHandle theMenu);
MenuHandle GetMHandle(short menuID);
void FlashMenuBar(short menuID);
menuID = 0 の場合は全体を反転(2回呼ぶことにより点滅できる)
void SetMenuFlash(short count);
void InitProcMenu(short resID);
long PopUpMenuSelect(MenuHandle menu, short top, short left,
short popUpItem);
/***GetMCInfo***/ SetMCInfo DispMCInfo GetMCEntry SetMCEntries DelMCEntries MCEntry MCEntryPtr MCTable MCTablePtr MCTableHandle MenuManager
GetMCInfo(2g)
【名前】
GetMCInfo -
SetMCInfo -
DispMCInfo -
GetMCEntry -
SetMCEntries -
DelMCEntries -
MCEntry - データタイプ
【書式】
■GetMCInfo V-239
■SetMCInfo V-239
■DispMCInfo V-239
■GetMCEntry V-239
■SetMCEntries V-239
■DelMCEntries V-238
MCTableHandle GetMCInfo(void);
void SetMCInfo (MCTableHandle menuCTbl);
void DispMCInfo(MCTableHandle menuCTbl);
MCEntryPtr GetMCEntry(short menuID, short menuItem);
void SetMCEntries(short numEntries, MCTablePtr menuCEntries);
void DelMCEntries(short menuID, short menuItem);
■MCEntry ??
MCEntry
short mctID;
short mctItem;
RGBColor mctRGB1;
RGBColor mctRGB2;
RGBColor mctRGB3;
RGBColor mctRGB4;
short mctReserved;
MCEntryPtr MCEntry *
MCTable MCEntry [1]
MCTablePtr MCEntry *
MCTableHandle MCEntry **
/***InitLayer***/ NewLayer DisposeLayer GetCurrentLayer SetCurrentLayer SwapCurrentLayer IsLayer GetChildWindows GetRootLayer LayerPtr LayerRecord LayerPeek
InitLayer(2g)
【名前】
InitLayer - Layer Manager の初期化
NewLayer - 新しい Layer の作成
DisposeLayer - Layer の破棄
GetCurrentLayer - カレント Layer の取得
SetCurrentLayer - カレント Layer の設定
SwapCurrentLayer - カレント Layer の設定をし元の Layer を取得
IsLayer - 指定ポートが Layer かチェック
GetChildWindows - Layer の(先頭の)子ウインドウを取得
GetRootLayer - ルート Layer の取得
LayerPtr - data type
LayerRecord - data type
【書式】
■LayerManager Inside Macintosh に記述なし
#include "Layers.h"
void InitLayers(void); ★この処理は行ってはいけない
OSErr NewLayer(LayerPtr* layerRef, Boolean visible,
Boolean neverActive, WindowPtr behind,
long refCon);
void DisposeLayer(LayerPtr layer);
LayerPtr GetCurrentLayer(void);
void SetCurrentLayer(LayerPtr layer);
LayerPtr SwapCurrentLayer(LayerPtr layer);
Boolean IsLayer(GrafPtr port);
WindowPeek GetChildWindows(LayerPtr layer);
LayerPtr GetRootLayer(void);
■LayerPtr GrafPtr
■LayerRecord
GrafPort port;
short windowKind;
Boolean visible;
Boolean reserved1; Always false.
Boolean neverActive;
Boolean reserved2; Always false.
RgnHandle strucRgn;
RgnHandle contRgn;
RgnHandle reservedRgn; Always valid empty region.
Handle windowDefProc;
LayerPeek parentLayer;
AuxWinHandle auxWindows;
short reserved3; Always zero.
AuxCtlHandle auxControls;
WindowPeek nextWindow;
WindowPeek childWindows;
long refCon;